package Funcionalidades.GestionarFixture;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.util.Vector;

import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Entidades.EntidadesDTO.CompetenciaDTO;
import Entidades.EntidadesDTO.EncuentroDTO;
import Entidades.EntidadesDTO.ParticipanteDTO;
import Entidades.EntidadesDTO.ResultadoPorSetDTO;
import Entidades.EntidadesDTO.SetDTO;
import Entidades.EntidadesLogica.Competencia;
import Entidades.EntidadesLogica.Encuentro;
import Entidades.EntidadesLogica.Participante;
import Entidades.EntidadesLogica.ResultadoPorSet;
import Funcionalidades.Menues.FrameUsuarioAutenticado;
import Funcionalidades.Menues.iDialogGeneral;
import Gestores.GestorFixture;
import Gestores.GestorUsuario;

import javax.swing.JSpinner;
import javax.swing.SwingConstants;
import javax.swing.SpinnerNumberModel;

import com.sun.org.apache.xml.internal.serialize.OutputFormat.DTD;

public class GestionarSets extends iDialogGeneral {

	private final JPanel panelDatos = new JPanel();

	private static final long serialVersionUID = 1L;
	
	private JSpinner[] spLocales=new JSpinner[9];
	private JSpinner[] spVisitantes=new JSpinner[9];
	private JPanel[] pnlTantos=new JPanel[9];
	private Component[] struts= new Component[9];
	
	private Encuentro encuentro;
	private Competencia competencia;
	private int ronda;

	public int getRonda() {
		return ronda;
	}



	public void setRonda(int ronda) {
		this.ronda = ronda;
	}



	private GestorFixture gFixture;
	private GestorUsuario gUsuario;


	
	

	public GestionarSets(FrameUsuarioAutenticado pantallaPrincipal) {
		super(pantallaPrincipal,true);
		setBoton(false);
		label= new Dimension(120, 30);
		datos= new Dimension(100,30);
		gFixture=gFixture.getGestorFixture();
		gUsuario=gUsuario.getGestorUsuario();
		
		
		Dimension tam= new Dimension(400, 600);
		setTamanio(tam);
		BorderLayout borderLayout = new BorderLayout();
		borderLayout.setVgap(5);
		borderLayout.setHgap(5);
		getContentPane().setLayout(borderLayout);
		
		JPanel panelTitulo = new JPanel();
		FlowLayout flowLayout = (FlowLayout) panelTitulo.getLayout();
		flowLayout.setHgap(0);
		flowLayout.setVgap(4);
		panelTitulo.setMaximumSize(panel);
		getContentPane().add(panelTitulo, BorderLayout.NORTH);
		
		JLabel lblTitulo = new JLabel("Gestionar Resultado");
		lblTitulo.setFont(new Font("Vani", Font.PLAIN, 20));
		panelTitulo.add(lblTitulo);
		
		panelDatos.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(panelDatos, BorderLayout.CENTER);
		panelDatos.setLayout(new BoxLayout(panelDatos, BoxLayout.Y_AXIS));
		
		JPanel panelInstansia = new JPanel();
		panelDatos.add(panelInstansia);
		panelInstansia.setMaximumSize(panel);
		
		JLabel lblInstanciaDeLa = new JLabel("Instancia de la Competencia: ");
		lblInstanciaDeLa.setHorizontalAlignment(SwingConstants.CENTER);
		panelInstansia.add(lblInstanciaDeLa);
		lblInstanciaDeLa.setPreferredSize(new Dimension(300,30));
		
		
		JPanel panelEquipos = new JPanel();
		panelDatos.add(panelEquipos);
		panelEquipos.setMaximumSize(panel);
		
		JLabel lblparticipantelocl = new JLabel("#ParticipanteLocal");
		lblparticipantelocl.setHorizontalTextPosition(SwingConstants.RIGHT);
		lblparticipantelocl.setHorizontalAlignment(SwingConstants.RIGHT);
		panelEquipos.add(lblparticipantelocl);
		lblparticipantelocl.setPreferredSize(label);
		
		
		Component horizontalStrut = Box.createHorizontalStrut(20);
		panelEquipos.add(horizontalStrut);
		
		
		JLabel lblparticipantevisitante = new JLabel("#ParticipanteVisitante");
		lblparticipantevisitante.setHorizontalTextPosition(SwingConstants.LEFT);
		lblparticipantevisitante.setHorizontalAlignment(SwingConstants.LEFT);
		panelEquipos.add(lblparticipantevisitante);
		lblparticipantevisitante.setPreferredSize(label);
		
		
		JPanel panelTantos = new JPanel();
		panelDatos.add(panelTantos);
		
		for(int i=0;i<9;i++){
			pnlTantos[i]= new JPanel();
			panelDatos.add(pnlTantos[i]);
			pnlTantos[i].setMaximumSize(this.panel);
			spLocales[i]= new JSpinner();
			spLocales[i].setModel(new SpinnerNumberModel(new Integer(0), new Integer(0), null, new Integer(1)));
			pnlTantos[i].add(spLocales[i]);
			spLocales[i].setPreferredSize(datos);
			struts[i]=Box.createHorizontalStrut(20);
			pnlTantos[i].add(struts[i]);
			spVisitantes[i]=new JSpinner();
			spVisitantes[i].setModel(new SpinnerNumberModel(new Integer(0), new Integer(0), null, new Integer(1)));
			pnlTantos[i].add(spVisitantes[i]);
			spVisitantes[i].setPreferredSize(datos);

			
			
		}
		
		Component strut= Box.createVerticalStrut(20);
		panelDatos.add(strut);
		
		JPanel panelInasistencia = new JPanel();
		panelDatos.add(panelInasistencia);
		panelInasistencia.setMaximumSize(panel);
		
		JButton btnNotificarInasistencia = new JButton("Notificar Inasistencia");
		panelInasistencia.add(btnNotificarInasistencia);
		btnNotificarInasistencia.setPreferredSize(new Dimension(200,30));
		
		
		Component glue = Box.createGlue();
		panelDatos.add(glue);
				
		JPanel buttonPane = new JPanel();
		buttonPane.setMaximumSize(panel);
		buttonPane.setLayout(new FlowLayout(FlowLayout.CENTER));
		getContentPane().add(buttonPane, BorderLayout.SOUTH);
		
		JButton okButton = new JButton("Aceptar");
		okButton.setActionCommand("OK");
		buttonPane.add(okButton);
		okButton.setPreferredSize(datos);
		okButton.addActionListener(new aceptarAction());

		
		Component horizontalStrut3 = Box.createHorizontalStrut(20);
		buttonPane.add(horizontalStrut3);
		
		
		JButton cancelButton = new JButton("Cancelar");
		cancelButton.setActionCommand("Cancel");
		buttonPane.add(cancelButton);
		cancelButton.setPreferredSize(datos);
		
		

	}
	public Encuentro getEncuentro() {
		return encuentro;
	}



	public void setEncuentro(Encuentro encuentro) {
		this.encuentro = encuentro;
	}



	public Competencia getCompetencia() {
		return competencia;
	}



	public void setCompetencia(Competencia competencia) {
		this.competencia = competencia;
	}
	
	class aceptarAction extends AbstractAction{

		@Override
		public void actionPerformed(ActionEvent arg0) {
			Vector<SetDTO> sets= new Vector<SetDTO>();
			int cantidad=competencia.getModalidad().getCantidadSets();
			
			for(int i=0;i<cantidad;i++){
				SetDTO nuevo=new SetDTO(i+1,(int) spLocales[i].getValue(),(int) spVisitantes[i].getValue());
				sets.add(nuevo);
			}
			CompetenciaDTO competenciaDTO=new CompetenciaDTO(competencia.getNombreCompetencia(), competencia.getDeporteAsociado(), competencia.getEstado(), null,gUsuario.getUsuarioLogueado());
			Participante p1=encuentro.getParticipanteLocal();
			Participante p2=encuentro.getParticipanteVisitante();
			ParticipanteDTO pd1= new ParticipanteDTO(p1.getIdParticipante(), null, null, null);
			ParticipanteDTO pd2= new ParticipanteDTO(p2.getIdParticipante(), null, null, null);
			
			ResultadoPorSetDTO rSet=new ResultadoPorSetDTO(encuentro.getNum_encuentro(),null, sets);
			
			EncuentroDTO enc= new EncuentroDTO(encuentro.getNum_encuentro(), null, null, pd1,pd2, null, null, null, null, null, rSet);
			try{
				gFixture.modificarResultado(competenciaDTO, enc, ronda);
			}
			catch(Throwable t){
				System.out.println(t.getMessage());
			}

			
			
			
			
		}
		
	}

}
